Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

139
Visualizações
JavaScript for Loop - Error Code "item not defined"

I am a bit stuck here because I can't figure out why this does not work. When i try to run the code then it says "ReferenceError: item is not defined" - but I thought that by writing "let item" I am defining it. Any idea what the problem is here ?

  • i know the code looks a bit more complicated than necessary but i need to do it like that.
class Graph {
  constructor() {
    this.nodes = new Set();
    this.edges = new Set();
  }

  add(m,n){
   let e = new Edge (m,n)
   var allEdges = new Set();
   for (let item of this.edges){ 
     allEdges.add(item.startpoint.nodeName,item.endpoint.nodeName)
   };
   if (allEdges.has(e.startpoint.nodeName,e.endpoint.nodeName)){ 
     console.log("first OCL Constraint")
   } else if(allEdges.has(e.endpoint.nodeName,e.startpoint.nodeName){    
     console.log("second OCL Constraint")}
   else { 
     this.edges.add(item.startpoint.nodeName,item.endpoint.nodeName)};
   }
};

class Edge {
  constructor(startpoint,endpoint) {
    this.startpoint = startpoint;
    this.endpoint = endpoint;
  }
};

class Node {
  constructor(nodeName) {
    this.nodeName = nodeName
  }
};

node1 = new Node (1);
node2 = new Node (2);
node3 = new Node (3);
node4 = new Node (4);
node5 = new Node (5);
myTestGraph = new Graph();

myTestGraph.add(node1,node2);
myTestGraph.add(node2,node1);
myTestGraph.add(node3,node4);

Thanks in advance :)

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

The problem seems to be in the last "else", where you reference the "item" out of its scope (you declare let item inside the for block) I think the correct code for the add() method is:

add(m,n){
   let item;
   let e = new Edge(m,n);
   var allEdges = new Set();
   for (item of this.edges){allEdges.add(item.startpoint.nodeName,item.endpoint.nodeName)};
   if (allEdges.has(e.startpoint.nodeName,e.endpoint.nodeName)){console.log("first OCL Constraint")}
   else if(allEdges.has(e.endpoint.nodeName,e.startpoint.nodeName)){console.log("second OCL Constraint")}
   else {this.edges.add(item.startpoint.nodeName,item.endpoint.nodeName)};
}

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda